/*
 * lib2Desa - Another 2D game library in C++
 * Copyright (C) 2009 Erivaldo Xavier de Lima Filho
 *
 * This program is free software and is distributed under GNU General Public License version 3. You can modify and/or redistribute
 * it under the terms of GPL version 3 or posterior version. This program comes with NO WARRANTY, for more details, see LICENSE,
 * or <http://www.gnu.org/licenses>.
 *
 * Contact info:
 *
 *	Erivaldo Xavier de Lima Filho, desadoc@gmail.com
 *
 */

#ifndef _TYPES_HPP
#define _TYPES_HPP

#define _stringify(A)	#A
#define stringify(A)	_stringify(A)

typedef char byte;
typedef unsigned char byte8;
typedef short int s16;
typedef unsigned short int u16;
typedef int s32;
typedef unsigned int u32;
typedef long long s64;
typedef unsigned long long u64;
typedef float f32;
typedef double f64;

#ifndef _NO_NAMESPACE
namespace lib2Desa {
#endif

template <typename T>
class shared_ptr;

class null_class
{
	public:
		template <typename T>
		operator T*(void)
		{
			return (T*) 0;
		}

		template <typename T>
		operator T*(void) const
		{
			return (T*) 0;
		}

/*		template <typename T>
		operator shared_ptr<T>(void) const;*/
};

#ifndef _NO_NAMESPACE
}
#endif

#ifndef _NO_NAMESPACE
extern lib2Desa::null_class null;
#else
extern null_class null;
#endif

#endif /*shared_ptr.hpp included*/
